#ifndef _AMERICO_D3D_UTILITIES_H_
#define _AMERICO_D3D_UTILITIES_H_

#include "Matrix.h"
#include "Vector.h"

namespace Utilities
{
	namespace D3D
	{
		void Inverse(Matrix44f &anInvertedMatrix, Matrix44f &aMatrix);
		void MatrixLookAt(Matrix44f &aMatrix, const Vector3f &aPosition, const Vector3f &aTarget, const Vector3f &anUp=Vector3f(0,1,0));
		void MatrixLookAt(Matrix33f &aMatrix, const Vector3f &aPosition, const Vector3f &aTarget, const Vector3f &anUp=Vector3f(0,1,0));
		void MatrixPerspective(Matrix44f &aMatrix, const float &aYFov, const float &someAspects, const float &aNearPlane, const float &aFarPlane);
		void MatrixOrthographic(Matrix44f &aMatrix, const float &aWidth, const float &aHeight, const float &aNearPlane, const float &aFarPlane);
		void MatrixOrthographic(Matrix44f &aMatrix, const Vector3f &aMinPoint, const Vector3f &aMaxPoint);
	};
};
namespace Utils = Utilities;
namespace UD3D = Utilities::D3D;

#endif